/////////////////////////////////////////////////////////////////////////////
// Name:        axsampleapp.h
// Purpose:     
// Author:      Julian Smart
// Modified by: 
// Created:     20/03/2009 15:46:38
// RCS-ID:      
// Copyright:   
// Licence:     
/////////////////////////////////////////////////////////////////////////////

#ifndef _AXSAMPLEAPP_H_
#define _AXSAMPLEAPP_H_

/*!
 * Includes
 */

////@begin includes
#include "wx/image.h"
#include "mainframe.h"
////@end includes

#include "ax/ax_view.h"
#include "ax/ax_activator.h"

#include "shortcutcust/shortcutcust.h"

enum {
    SHOW_STATUS_MAXIMIZED,
    SHOW_STATUS_MINIMIZED,
    SHOW_STATUS_NORMAL
};

/*!
 * Forward declarations
 */

////@begin forward declarations
////@end forward declarations

/*!
 * Control identifiers
 */

////@begin control identifiers
////@end control identifiers

/*!
 * AxSampleApp class declaration
 */

class AxSampleApp: public wxApp
{    
    DECLARE_CLASS( AxSampleApp )
    DECLARE_EVENT_TABLE()

public:
    /// Constructor
    AxSampleApp();

    void Init();

    /// Initialises the application
    virtual bool OnInit();

    /// Called on exit
    virtual int OnExit();

    AxViewManager& GetViewManager() { return m_manager; }

    wxShortcutManager& GetShortcutManager() { return m_shortcutManager; }

    /// Load custom pronunciations.
    void LoadPronunciations();

    /// Save custom pronunciations.
    void SavePronunciations();

    /// Load settings
    bool LoadSettings();

    /// Save settings
    bool SaveSettings();
    
    /// Initialize custom shortcuts
    bool InitShortcuts();

////@begin AxSampleApp event handler declarations

////@end AxSampleApp event handler declarations

////@begin AxSampleApp member function declarations

////@end AxSampleApp member function declarations

////@begin AxSampleApp member variables
////@end AxSampleApp member variables

    AxViewManager       m_manager;

    // Test variables
    wxString            m_testFolderString;
    wxString            m_testFileString;
    wxString            m_testString;
    bool                m_toggle;
    int                 m_testRangeValue;
    
    wxRect              m_frameRect;
    int                 m_frameStatus;
    wxShortcutManager   m_shortcutManager;
};

/*!
 * TestChoiceActivator class declaration.
 * Tests out the modal choice menu.
 */

class TestChoiceActivator: public AxActivator
{
public:
// Constructors

    TestChoiceActivator() { Init(); }

// Operations

    void Init() { }

    virtual AxActivator* Clone() const { return new TestChoiceActivator; }

    virtual AxMenu* Activate(AxMenuController* controller, AxMenuItem* item);

protected:

};


// For pop-up command menu (for choices of commands to edit or view the selected file)
#define ID_FILE_MENU_START      2100
#define ID_FILE_MENU_END        2150

#define ID_STOP_SPEECH AxGetId(AxIdentifierStopSpeech)
#define ID_GO_HOME AxGetId(AxIdentifierGoHome)
#define ID_GO_UP AxGetId(AxIdentifierGoUp)
#define ID_DESCRIBE_CONTEXT AxGetId(AxIdentifierDescribeContext)
#define ID_DESCRIBE_ITEM AxGetId(AxIdentifierDescribeItem)

/*!
 * Application instance declaration 
 */

////@begin declare app
DECLARE_APP(AxSampleApp)
////@end declare app

#endif
    // _AXSAMPLEAPP_H_
